import { TemplateRef } from '@angular/core';
import { SFUISchemaItem } from '@delon/form';
import type { NzSafeAny } from 'ng-zorro-antd/core/types';
import { Observable } from 'rxjs';

export interface SFStringWidgetSchema extends SFUISchemaItem {
    /**
     * 文字框中显示提示信息
     */
    placeholder?: string;

    /**
     * 自动完成功能的表单
     */
    autocomplete?: 'on' | 'off';

    /**
     * 加载时是否获得焦点
     */
    autofocus?: boolean;

    /**
     * 前置标签，等同 `nzAddOnBefore`
     */
    addOnBefore?: string | TemplateRef<void>;

    /**
     * 带有前缀图标的 input，等同 `nzPrefix`
     */
    prefix?: string | TemplateRef<void>;

    /**
     * 前置Icon，等同 `nzAddOnBeforeIcon`
     *
     * @deprecated `nz-input` 可能未来不再支持
     */
    addOnBeforeIcon?: string;

    /**
     * 前缀图标，等同 `nzPrefixIcon`
     *
     * @deprecated `nz-input` 可能未来不再支持
     */
    prefixIcon?: string;

    /**
     * Whether hide border, Default: `false`
     */
    borderless?: boolean;

    /**
     * `change` event throttling and sequence control threshold
     *
     * `change` 事件节流与顺序控制的阀值
     */
    changeDebounceTime?: number;

    /**
     * Convert data, equivalent to `switchMap` operation
     *
     * 转换数据，相当于 `switchMap` 操作
     */
    changeMap?: (val: string) => Observable<NzSafeAny>;

    /**
     * 内容变更事件
     */
    change?: (val: NzSafeAny) => void;

    /**
     * 焦点事件
     */
    focus?: (e: FocusEvent) => void;

    /**
     * 失焦事件
     */
    blur?: (e: FocusEvent) => void;

    /**
     * 回车事件
     */
    enter?: (e: Event) => void;
}
